package com.monster.token.entity;

import com.monster.token.common.TokenConstant;
import com.monster.token.utils.TokenUtils;

import java.util.HashMap;

/**
 * token信息
 *
 * @author kuang
 */
public class Token extends HashMap<String, Object> {

    /**
     * 类型
     * 1：session以及token双认证
     * 2：token认证
     * 3：第三方颁发信息认证
     */
    public void setType(String type) {
        this.put(TokenConstant.TYPE, type);
    }

    public String getType() {
        return TokenUtils.getObject(this.get(TokenConstant.TYPE));
    }

    /**
     * 设备类型
     * 1：pc
     * 2：手机
     * 3：pad
     */
    public void setDeviceType(String deviceType) {
        this.put(TokenConstant.DEVICE_TYPE, deviceType);
    }

    public String getDeviceType() {
        return TokenUtils.getObject(this.get(TokenConstant.DEVICE_TYPE));
    }


    /**
     * 创建时间
     *
     * @param createTime 创建时间
     */
    public void setCreateTime(Long createTime) {
        this.put(TokenConstant.CREATE_TIME, createTime);
    }

    public Long getCreateTime() {
        return TokenUtils.getObject(this.get(TokenConstant.CREATE_TIME));
    }

    /**
     * 过期时间
     *
     * @param expireTime 过期时间
     */
    public void setExpireTime(Long expireTime) {
        this.put(TokenConstant.EXPIRE_TIME, expireTime);
    }

    public Long getExpireTime() {
        return TokenUtils.getObject(this.get(TokenConstant.EXPIRE_TIME));
    }

    /**
     * 权限
     *
     * @param auth 权限对象
     */
    public void setAuth(TokenAuth auth) {
        this.put(TokenConstant.AUTH, auth);
    }

    public TokenAuth getAuth() {
        return TokenUtils.getObject(this.get(TokenConstant.AUTH));
    }

    /**
     * 用户信息
     *
     * @param user 用户对象
     */
    public void setUser(TokenUser user) {
        this.put(TokenConstant.USER, user);
    }

    public TokenUser getUser() {
        return TokenUtils.getObject(this.get(TokenConstant.USER));
    }


    /**
     * 客户端信息
     *
     * @param client
     */
    public void setClient(TokenClient client) {
        this.put(TokenConstant.CLIENT, client);
    }

    public TokenClient getClient() {
        return TokenUtils.getObject(this.get(TokenConstant.CLIENT));
    }

    /**
     * 签名串
     *
     * @param sign 签名串
     */
    public void setSign(String sign) {
        this.put(TokenConstant.SIGN, sign);
    }
}
